import hashlib

from rich.console import Console
from sqlalchemy import create_engine, select
from sqlalchemy.orm import Session

from apserver_mgr.models import Tolsysh, Tolsysd

# TOL030 默认应用
# S21 偉立ERP11應用 ERP\WLERP11
DEFAULT_SYSNO = "S21"

# 连接 SQLServer 数据库
# 注意是 中心库soudb, 实际是在 中山伟立wldb，
# 在中心库通过视图进行映射
#
# 2.解决中文乱码问题，字段类型要为 NVARCHAR
engine = create_engine("mssql+pymssql://wluser:wlpwd.123@msdbt/wldbtest", echo=False)


def init_system(sysno: str):
    with Session(engine) as session:
        # 查询系统信息
        sysinfo = session.scalars(select(Tolsysh).where(Tolsysh.sysno == sysno)).one()

        # 查询服务器列表
        servers = session.scalars(
            select(Tolsysd)
            .where(Tolsysd.sysno == sysno)
            .where(Tolsysd.status == "1")
            .order_by(Tolsysd.trseq)
        ).all()

        console = Console()
        console.print()

        # 打印系统信息
        console.print(f"  [green]当前系统[/green] {sysinfo.sysno} {sysinfo.sysname}")

        # 打印服务器总数
        console.print(f"  [green]服务器总数[/green] {len(servers)}")

        console.print()

        # 返回结果数据
        return console, sysinfo, servers


def calculate_md5(file_path):
    """
    计算文件MD5
    """
    with open(file_path, "rb") as f:
        md5_hash = hashlib.md5(f.read()).hexdigest()
    return md5_hash
